package com.it.thymeleaf.thymeleafdemo.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.it.thymeleaf.thymeleafdemo.bean.Emp;
import com.it.thymeleaf.thymeleafdemo.service.EmpService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.annotation.Resource;
import java.util.List;

@Controller
public class EmpController {
    @Resource
    private EmpService empService;
    //添加注解注释

    /**
     * 查询所有员工列表的方法
     * @param model
     * @return 员工列表页面
     */
    @RequestMapping(value="selectAllEmpList.do",produces="application/json; charset=utf-8")
    public String selectAllEmpList(Model model, @RequestParam(defaultValue = "1") int pageNum){
        //通过PageHelper调用startPage方法设置查询的页码和每页查询条数
        PageHelper.startPage(pageNum,3);
        //开始查询
        List<Emp> emps = empService.selectAllEmpList();
        //将查询的结果以及分页的相关数据封装到pageInfo的对象中
        PageInfo pageInfo = new PageInfo(emps);
        model.addAttribute("pageInfo",pageInfo);
        return "list";
    }

    /**
     * 跳转到员工添加页面的方法
     * @return 员工添加页面
     */
    @RequestMapping("toAddPage.do")
    public String toAddPage(){
        return "add";
    }

    /**
     * 添加员工信息的方法
     * @param emp
     * @return 员工信息列表页面
     */
    @RequestMapping("addEmp.do")
    public String addEmp(Emp emp){
        int result = empService.addEmp(emp);
        if(result > 0){
            return "redirect:selectAllEmpList.do";
        }else{
            return "add";
        }
    }

    /**
     * 根据员工姓名模糊查询的方法
     * @param model
     * @param ename 员工姓名
     * @return 员工信息列表页面
     */
    @RequestMapping("selectEmpByName.do")
    public String selectEmpByName(Model model,@RequestParam(defaultValue = "") String ename){
        List<Emp> emps = empService.selectEmpByName(ename);
        model.addAttribute("emps",emps);
        return "list";
    }

    /**
     * 根据员工编号（id）查询员工信息的方法
     * @param empno 员工编号（id）
     * @param model
     * @return 修改员工信息页面
     */
    @RequestMapping("selectEmpById.do")
    public String selectEmpById(int empno, Model model){
        Emp emp = empService.selectEmpById(empno);
        model.addAttribute("emp",emp);
        return "update";
    }

    /**
     * 修改员工信息的的方法
     * @param emp
     * @return 员工显示
     */
    @RequestMapping("updateEmpById.do")
    public String updateEmpById(Emp emp){
        int result = empService.updateEmpById(emp);
        if(result > 0){
            return "redirect:selectAllEmpList.do";
        }else{
            return "update";
        }
    }

    /**
     * 删除用户信息的方法
     * @param empno
     * @return
     */
    @RequestMapping("deleteEmpById.do")
    public String deleteEmpById(int empno){
        int result = empService.deleteEmpById(empno);
        if(result > 0){
            return "redirect:selectAllEmpList.do";
        }else{
            return "list";
        }

    }
}
